2016/08/22

深度學習為什麼會這麼厲害?Yann LeCun 提供的三個觀點


深度學習 (deep learning) 大概是這幾年機器學習領域在應用上大放異彩的主要關鍵之一,從影像、語音到各種資料型態的辨識和分類,藉由深度學習帶來的技術突破,讓電腦達到了接近人類,甚至超越人類的水平。

但是,為什麼深度學習這麼厲害? 目前雖然還沒有完整的解釋,但是 KDNugget 的一篇 "3 Thoughts on Why Deep Learning Works So Well",摘錄了 Yann LeCun (Convolutionl Neural Network 的主要貢獻者之一) 的一些對談,提供了一些可能的思考方向。

七月底,Yann LeCun 在知識網站 Quora 上舉辦了一場線上問答,其中一個問題是「我們什麼時候可以看到深度學習的理論和數學基礎?」(When will we see a theoretical background and mathematical foundation for deep learning?)。

Yann LeCun 的回覆裡有幾個洞見,非常有參考價值:

  • 在高維度的空間裡,不容易發生局部最佳值 (local minima) 的狀況
  • 多層次的數學結構,可以更扼要地描述複雜的函數
  • ConvNets 對「特定的資料型態」很有效


局部最佳值是在做「數學最佳化」時常常遇見的問題,而大多數機器學習演算法都包含這個步驟,因此也就繼承了同樣的難題,通常需要反覆的調整參數才能克服。深度學習的演算法包含了非常大量的變數,等於是在一個非常高維度的空間裡做最佳化,也因而提供了一個跳脫局部最佳值的途徑。

而 Convolutionl Neural Network 作為深度學習演算法的其中一個分支,在影像辨識,或者更廣義的說,「空間信號」(spatial signals) 上,有比其他型態資料更好的表現,某種程度上也反映出在描述特定資料型態時,有其較適合的數學模型的事實。關於這一點更詳細的解釋,可以在 "Invariant scattering convolution networks" 這篇論文裡找到。


同一個 Quora 問答集裡的另一個問題,聊到深度學習最近值得注意的新發展,Yann LeCun 提到 GAN (Generative Adversarial Networks) 的發展,這跟我過去做過一段時間的 co-evolutionary algorithm 其實是很相近的概念,不過這個話題應該要另外寫一篇了。




2016/08/11

資料可以說成怎樣的故事?


「說故事」對任何人來說都是相當重要的能力,對一個資料科學家來說尤其如此。

一般來說,資料分析的專家(好像現在都叫資料科學家了)在商業場合大多是扮演「決策輔助」的角色,需要把資料分析的結果,包裝成其他人(尤其是決策者)看得懂的東西,說服他們「根據資料,有幾種可行的建議,各自有怎樣的成功率以及風險」。「說服」很重要的是對聽眾的理解,包含人性的理解和商業邏輯的理解,以純粹技術背景出身的人來說,大概會是比較吃力的一環。

哈佛商業評論除了宣稱「資料科學家是21世紀最性感的職業」之外,也有不少「如何用資料說故事」的文章。Thomas Davenport 在 2014 年的一篇「10種用資料說故事的方法」裡,建議可以從四個面向來看資料可以說的故事:
  • 時間:是對過去歷史的回顧,對現在市場狀況的調查,還是對未來的預測
  • 焦點:想表達的重點屬於「是什麼」、「為什麼」還是「怎麼辦」。
  • 深度:短期的處理資料問題,或是長期深入的探索新發現。
  • 方法:相關或是因果

當然,這些不同的方法通常都是混合使用的,Jim Stikeleather 在更早的一篇「如何用資料說故事」裡,有以下五項建議:
  1. 找一個吸引人的敘述方式
  2. 瞭解你的聽眾
  3. 客觀而且平衡
  4. 不要主動過濾資料
  5. 修改,修改,再修改

如同最前面說的,個人覺得其中的第二項應該是最需要花功夫的,然而言歸正傳,一旦瞭解了聽眾的背景與需求,其實就可以按照 Thomas Davenpor 提供的四大面向,組合出「吸引人的敘述方式」。
但是,我覺得在實務上,如果你對你的聽眾太過瞭解,彼此又有利害關係的時候,好像第三、第四項反而變得難以堅持了 XD。


[參考資料]

2016/08/07

[Data Analytics] 評估資料模型的常用方法




資料科學的工作,有一部份是用資料建立數學模型,然後用建立好的模型來對未來作預測。然而一個數學模型到底建得好不好,應該要怎麼評估呢?Laetitia Van Cauwenberge 的這篇 "11 Important Model Evaluation Techniques Everyone Should Know" 是不錯的簡介,以下是她所提到的 11 個方法,我稍微調整了一下順序:
  1. Root Mean Square Error (RSME).
  2. L^1 version of RSME.   
  3. Confidence Interval.
  4. Kolmogorov-Smirnov Chart
  5. Chi Square
  6. ROC curve
  7. Gini Coefficient.  
  8. Confusion Matrix.
  9. Gain and Lift Chart.
  10. Cross Validation
  11. Predictive Powe
這11個項目涵蓋了統計學(statistics)、資料探勘(data mining)和機器學習(machine learning)領域絕大多數「評估」的方法,原文對各項的介紹相當清楚,但嚴格說來這些方法屬於幾種不同層次的概念,彼此之間倒也不是互相獨立,而是可以混搭使用的。我從個人的觀點簡單的摘要一下。

從概念的複雜度來看,Root Mean Square ErrorL^1 version of RSME 屬於最基本的數值型指標,用來表示兩組數據之間的差異性,如果這兩組數值是「模型的預測」和「標準答案」,這類數值指標就可以很直觀的表示「這個模型有多好」。而 L^1 version of RSME 屬於比較新的概念,基本上是修改 Root Mean Square Error 以使其更適合非數值的資料型態。

ROC curveConfusion Matrix 屬於上述數值型指標的特殊呈現方式。RSME 描述的是兩組數據的差異,但是當這兩組數據是二元資料(0 或1)或類別資料(0, 1, 2, ...N)時,就常常會用 ROC Curve 或 Confusion Matrix 來表示。這樣的呈現方式讓我們可以很快的看出模型在預測上的表現,並根據決策者的風險偏好來選擇適合的模型。而 Gini CoefficientROC curve 的延伸指標,把一張圖的主要特徵轉換成一個簡單的數字。

在一般統計課程的「推論統計」部分,應該都會學到 Confidence IntervalChi Square,和 Kolmogorov-Smirnov Test 等概念。由於導入了「機率分布」的概念,這些方法比基本數值稍微複雜一些,但可以提供類似「我對這個模型有 xx% 的信心」這樣的參考,所以在決策或風險管理的過程中,比簡單的數值更有意義一些。

Gain and Lift 是從行銷和資料探勘領域提出的概念,用「投入資源得到的效益」來評估一個模型的預測能力,據以決定行銷活動的規模。這個方法在其他領域的應用比較少見。

Cross Validation 則是更抽象一層的概念。無論你用前面敘述的哪一種方法來評估一個模型,都會面臨一個問題:「我的評估有多可靠?」一般的模型評估,我們會把手上的資料分成「訓練組」(training data)和「測試組」(testing data),用前者來建立模型,然後用後者來評估模型的表現。然而,我們切分資料的方法,是不是讓切分的資料像的外面真實世界一樣,還是變得有所偏頗?這是很難回答的問題,Cross Validation 則提供了至少在數學上合理的方式:把整組資料反覆切分若干次,然後把每次的表現指標整合起來看,以防止資料切分造成的偏頗。類似的 resampling 方法還有很多,例如 bootstraping

最後一項 Predictive Power,是資料科學的主要推手之一,Vincent Granville 前幾年提出來的方法,主要是在大數據的環境下實作快速 feature selection 的方法。Feature selection 是資料科學裡蠻重要的一環:我們有很多的資料、很多的變項,然而什麼樣的組合,對預測我們關心的問題,是最有效的?這跟 Cross Validation 試圖回答的問題一樣抽象,很可能是沒有答案的,而學術上提出的方法很多,也很難證明哪一種是最好的。幸好站在實務的角度來看,能在有限的資源下能給我夠好的答案即可,而這個 Predictive Power 看來也是個務實的解決方案。

以我個人的實務經驗來說,最常用的評估方法是 10-fold cross-validation + confusion matrix,然後根據結果再進一步做 feature selection。當然這是由於我較常解決問題的形式屬於透過 classification 跟 clustering 來做決策,如果是做單純的數值預測,cross-validation + RSME 或許就已經是夠好的指標了。